写在前面,该入坑指南是以Mob发送短信验证码为例,实现MUI第三方插件的开发,仅供参考。
HTML5+ 基座扩展采用三层结构,JS层、PluginBridge层和Native层。 三层功能分别是:
JS层: 在Webview页面调用,触发Native层代码,获取执行结果。
PluginBridge层: 将JS层请求进行处理,触发Native层扩展插件代码。
Native层: 插件扩展的平台原生代码,负责执行业务逻辑并执行结果返回到请求页面。1. 预备环境
- AndroidStudio开发环境,要求安装Android4.0或以上(API 14)SDK
- 下载HBuilder离线打包Android版SDK(5+SDK下载)
1.1 离线SDK目录结构
|
|
2. 配置编译工程
使用Android Studio创建一个新的Android项目
2.1 导入jar包
SDK/libs/目录中选择需要导入的jar包,导入到工程目录的libs下。
根据官方文档,至少需要添加12345pdr.jarui.jarnineoldandroids-2.4.0.jarmy-imageloader.jarmy-nineoldandroids-2.4.0.jar
在
SDK/libs目录下并没有找到nineoldandroids-2.4.0.jar,所以并没有导入nineoldandroids-2.4.0.jar。
这里贴出我导入的jar包
添加成功后选中libs目录里的库文件,鼠标右键打开菜单,选择“Add As Library…”将填加到工程内的jar文件链接到工程里
2.2 添加资源到工程中
- 打开工程目录的
res文件夹,删除目录下已有的目录 - 拷贝
SDK/res目录下的全部目录到工程的res目录下 - 在
app->src->main目录下添加assets目录 - 拷贝
SDK/assets/目录下的data目录和res目录到工程的目录下
3. 修改原生工程的Androidmanifest.xml文件
3.1 修改application节点
- 修改android:icon属性值为@drawable/icon
- 删除android:theme属性
- 删除allowBackup属性
- 添加android:largeHeap=”true”
- 添加 android:name=”io.dcloud.application.DCloudApplication”
- 添加android:allowClearUserData=”true”
注意: 点击这里查看io.watasi.EntryActivity
3.2 添加文件支持的屏幕旋转方向
|
|
3.3 添加最低支持系统版本
|
|
3.4 添加5+SDK必需引用的系统权限
|
|
3.5 添加Mob必须的系统权限
|
|
3.6 贴出整个Androidmanifest.xml文件
android:versionCode与mainfest.json下的version->code一致android:versionName与mainfest.json下的version->name一致1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071<!--package="com.hyxk.ggmall.personal"--><manifest xmlns:android="http://schemas.android.com/apk/res/android"android:versionCode="83" // 注意阅读上面android:versionName="1.0.0" // 注意阅读上面package="com.infozx.yaoqingba"><supports-screensandroid:anyDensity="true"android:largeScreens="true"android:normalScreens="true"android:resizeable="true"android:smallScreens="true" /><uses-sdk android:minSdkVersion="8" /><!-- HBuilder Runtime 基础权限 begin --><!-- 联网 --><uses-permission android:name="android.permission.INTERNET" /><!-- 使用存储卡 --><uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /><uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/><uses-permission android:name="android.permission.GET_TASKS" /><!-- Html5Plus runtime基础权限 end --><uses-permission android:name="android.permission.READ_CONTACTS" /><uses-permission android:name="android.permission.READ_PHONE_STATE" /><uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /><uses-permission android:name="android.permission.RECEIVE_SMS" /><uses-permission android:name="android.permission.READ_SMS" /><uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /><applicationandroid:allowClearUserData="true"android:icon="@drawable/icon"android:label="@string/app_name"android:largeHeap="true"android:name="com.mob.MobApplication"><activityandroid:name="io.watasi.EntryActivity"android:configChanges="orientation|keyboardHidden|keyboard|navigation"android:label="@string/app_name"android:launchMode="singleTask"android:hardwareAccelerated="true"android:theme="@style/TranslucentTheme"android:screenOrientation="user"android:windowSoftInputMode="adjustResize" ><intent-filter><action android:name="android.intent.action.MAIN" /><category android:name="android.intent.category.LAUNCHER" /></intent-filter></activity><activityandroid:name="com.mob.tools.MobUIShell"android:theme="@android:style/Theme.Translucent.NoTitleBar"android:configChanges="keyboardHidden|orientation|screenSize"android:windowSoftInputMode="stateHidden|adjustResize"/><!--配置Mob--><meta-data android:name="Mob-AppKey" android:value="你的KEY"/><meta-data android:name="Mob-AppSecret" android:value="你的Secret"/><serviceandroid:name="io.dcloud.common.adapter.io.MiniServerService"android:exported="true" /></application></manifest>
4. 修改工程源码
4.1 EntryActivity
这里贴上整个activity的源码,其中有部分地方需要修改
将appBasePath变量改为/apps/mainfest.json下的id
4.2 在java目录下添加io.dcloud包
4.3 拷贝SDK\src\io\dcloud\Rinfomation.java文件到工程的io.dcloud包下
|
|
5. 添加Web应用资源到工程
在
assets目录下创建apps/[appid]/www目录,将web应用拷贝到www目录下,[appid]为Web应用mainfest.json文件id节点的内容。
- 修改
src/main/assets/data/dcloud_control.xml文件,修改app节点的appid属性和appver属性的值。appid属性填写Web应用的mainfest.json文件的ID节点内容,appver属性填写manifest.json文件的version节点下的name节点的内容。
6. 插件开发
这里以发送短信验证码为例,创建SendMsg.java
注意:插件编写完成后,一定要在assets/data/dcloud_properties.xml文件中声明插件类别名和Native层扩展插件类的对应关系
7. 编写插件JS API && 调用JS API
7.1 编写API
|
|
7.2 页面调用
|
|